"""
requests  模块的使用
"""
import requests
from PIL import Image
# import Image
from io import BytesIO
# r = requests.get('https://api.github.com/events')
# r = requests.post('http://httpbin.org/post', data = {'key':'value'})

#注意字典里值为 None 的键都不会被添加到 URL 的查询字符串里。
"""
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get", params=payload)
"""
"""
# 你还可以将一个列表作为值传入：
payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
r = requests.get('http://httpbin.org/get', params=payload)
"""

# 响应内容¶ r.text
# r= requests.get('http://credit.hangzhou.gov.cn/home/images/20190902-5.png');
# print(r.text)
"""
 二进制响应内容¶    字节内容 r.content

"""
# print(r.content)
# i = Image.open(BytesIO(r.content))
# i.save("D:\\fanfan.png");

"""
    JSON 
"""
# r = requests.get('https://api.github.com/events')
# print(r.json())


"""
    原始相应内容    例如下载woof字体之之类的
"""
# r = requests.get('https://api.github.com/events', stream=True)
# # r.raw
# # r.raw.read(10)
# filename = "D:\\test.txt";
# chunk_size = 1000;
# with open(filename, 'wb') as fd:
#     for chunk in r.iter_content(chunk_size):
#         fd.write(chunk)


"""
定制响应头
定制 header 的优先级低于某些特定的信息源，例如：

如果在 .netrc 中设置了用户认证信息，使用 headers= 设置的授权就不会生效。而如果设置了 auth= 参数，``.netrc`` 的设置就无效了。
如果被重定向到别的主机，授权 header 就会被删除。
代理授权 header 会被 URL 中提供的代理身份覆盖掉。
在我们能判断内容长度的情况下，header 的 Content-Length 会被改写。
"""


# url = 'https://api.github.com/some/endpoint'
# headers = {'user-agent': 'my-app/0.0.1'}
# r = requests.get(url, headers=headers)

"""
Cookie
"""

# url = 'http://credit.hangzhou.gov.cn/home/home.html'
# r = requests.get(url)
# print(r.cookies)

"""

你可以告诉 requests 在经过以 timeout 参数设定的秒数时间之后停止等待响应。基本上所有的生产代码都应该使用这一参数。如果不使用，你的程序可能会永远失去响应：

>>> requests.get('http://github.com', timeout=0.001)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
requests.exceptions.Timeout: HTTPConnectionPool(host='github.com', port=80): Request timed out. (timeout=0.001)
注意
timeout 仅对连接过程有效，与响应体的下载无关。 timeout 并不是整个下载响应的时间限制，而是如果服务器在 timeout 秒内没有应答，将会引发一个异常（更精确地说，是在 timeout 秒内没有从基础套接字上接收到任何字节的数据时）If no timeout is specified explicitly, requests do not time out.
"""

url = "http://www.baidu.com"
response = requests.get(url)
print(type(response.cookies))

cookies = requests.utils.dict_from_cookiejar(response.cookies)
print(cookies)
